home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Info-Mac 4
/
Info_Mac IV CD-ROM (Pacific HiTech Inc.)(August 1994).iso
/
Development
/
General
/
DR1.#1 68K Pascal ƒ
/
MWPascal 68K 1.0d5 Notes
< prev
next >
Wrap
Text File
|
1994-02-11
|
5KB
|
115 lines
Metrowerks 68K Pascal release notes
===================================
Version: 1.0d5
Date: February 9, 1994
Author: Marcel Achim
If you encounter undefined symbols during your link, be sure to add
Pascal/RT.lib to your project.
- Accelerated symbol tables manipulations.
- standard memory management functions fixed.
- variant record tags are aligned as in MPW.
- variant record size is ajusted accordingly.
- variant record selector accepts ranges, ie. id1 .. id2 : (..)
- procedure calls w/o () are now checked for missing formal parameters.
- positionning of errors in source file is fixed.
- find definition works.
- functions' popup fixed.
- reading and writing of packed arrays is fixed for files and SIOUX.
- external C variables must be declared accroding to the following syntax :
C; id {',' id} : Type ; ['FAR' | 'EXTERNAL']
the C directive comes ahead of variable declarations and lasts until the Type.
- far data is activated. Declaration syntax for variables is :
id {',' id} : Type ';' ['FAR' | 'EXTERNAL'] ';'
these directives are valide only at the unit/program level.
- Standard op BSET, BCLR, BTST fixed.
- Write of boolean values allowed.
- compatibility between ranges of integer and longints.
- multiple references between variables in nested functions bad codegen.
- inner functions have an extra number to make them uniquely defined.
- linker error messages are now displayed.
- output of boolean values to file and windows.
- redundant loads skipped in fp by-value passing.
- IOResult returns and integer now.
- mark and release accept any pointer type now.
- the C compiler's assembler is integrated, the function's syntax is :
ProcedureHeading 'ASM' ';' { ConstDecl VarDecl TypeDecl }
'BEGIN' AssemblerStatements 'END' ';'
example :
FUNCTION foo ( VAR x : INTEGER ) : INTEGER; ASM;
BEGIN
movea.l x,a0
...
move d0,8(a7)
rts
END;
- ranges take the smallest possible size.
- by-value floating point values are passed as in MPW Pascal.
- some fixes to the preprocessor (no more infinite loop, unrecognized $I directive).
- function results used in castings and writeln (occured with parameterless functions).
- ORD4 behaviour similar to ORD's.
- ABS accepts ranges now.
- casting of integers to packed arrays.
- structured function result followed by selector as l-values.
- assignment of set constructors to small sets.
- linkage conventions match MPW Pascal's except for FP.
- function return values cannot be assigned in an inner scope.
- the binary symbol tables are now compressed, so you have to patch
Pascal/RT.lib and Pascal/MacOS.lib
- PasLibIntf.p and IntEnv.p are components of Pascal/RT.lib
Restrictions & wildlife (these features will disappear in the next release)
- exit not permitted through multiple scopes.
- no runtime range or overflow checking.
- all logical operations are short-circuit.
- see Preprocessor below.
- FPU code generation for runtime math operations is hosed, so don't
use the mc68881 switch.
- writeln(boolean) not supported.
- LONGINT not support as variant case tag type.
- irrelevant warning messages with extended error checking.
- constant string indexing is not supported (ie. '0123456789ABCDEF'[idx] )
- NEW allocates memory for the biggest case possible.
- ** operator not supported yet.
- Find Reference goes directly to ThinkReference™.
Extensions
- QuickDraw global variables (thePort, ...) are now contained in a record variable
named qd. (See Sillyballs.p or TubeTest.p, to see its usage).
- Procedural types are supported, see the documentation ...
- Scope searching rules can be changed by using unitname.objname syntax. This option
is controled by the 'Language''s qualident switch.
- Objects can be propagated through USES clauses with the Uses propagation switch.
- Directives in the prefix file must use the preprocessor's syntax.
- Screen oriented I/O are triggered by the first I/O call made without a file descriptor.
Preprocessor
- conditional compilation is supported.
- the following options are not supported, but will be
$MC680x0, $MC6888x, $OV, $R, $SC, $W, $D, $Z,
- the following options are not supported, and won't be
$B, $C, $J, $H, $N, $A1, $A5, $E, $K, $P, $PUSH, $POP
Interfaces
- The interfaces provided with the compiler are only there for reference purpose,
the compiler uses binary tables in MacOS.lib (which must be added to your project file).
Debugger support
- standard .SYM generation, works fine with Jasik's the Debugger™, except for
sets which are not MPW. In some cases, code of nested routines is badly displayed.
Examples
- Have fun.
Marcel Achim
Metrowerks, Inc.
Internet: achim@metrowerks.ca